<?php

class AppController extends Controller {
	var $helpers = array('Js', 'Form', 'Time', 'Html', 'Session',  'Authake.Authake');
	var $components = array('Session','RequestHandler', 'Authake.Authake');
	var $counter = 0;
	function beforeFilter(){
		$this->auth();
		Configure::write('Config.language', 'rus');
	}
	function afterFilter(){
		if ($this->Session->check('LogsSettings')) {
			// подключаем модель логов
			$this->loadModel('Log');
			// выбираем из сессии учетные данные польхователя - login и группы в которых он находится
			$logsettings = explode('|', $this->Session->read('LogsSettings'));
			// берем url который он запрашивает
			$log_url = $this->request->url;
			$newLog = array('Log' => array('login' => $logsettings[0],'groups' => $logsettings[1],  'url' => $log_url));
			//debug($newLog);
			//  пишем в таблицу логин группы действие пользователя и время совершения действия
			$this->Log->create();
			$this->Log->save($newLog);
			// подключаем модель OnlineUser
			$this->loadModel('Onlineuser');
			$login = $logsettings[0];
			$nowtime = date('Y-m-d H:i:s');
			// обновляем lastaction время последнего действия пользователя
			$onlineuser_id = $this->Onlineuser->find('all', array('conditions' => 
													array('Onlineuser.login' => $login), 'fields' => array('Onlineuser.id')));
			if ($onlineuser_id){
				$this->Onlineuser->id = $onlineuser_id[0]['Onlineuser']['id'];
				$this->Onlineuser->savefield('lastaction', $nowtime);
			}
			// формируем время инактивности
			$year = date('Y'); $month = date('m'); $day = date('d'); $hour = date('H'); $minutes = date('i'); $seconds = date('s');
			if (($minutes - 10)<0){
				if (($hour - 1)<0){
					$hour = 23;
				} else {
					$hour -= 1;
				}
				$minutes = 60 - (10 - $minutes);
			} else {
				if ($minutes <20){
					$minutes = '0'.($minutes-10);
				} else {
					$minutes -= 10;
				}
			}
			$cleartime = $year.'-'.$month.'-'.$day.' '.$hour.':'.$minutes.':'.$seconds;
			// удаляем тех пользователей последнее действие которых было более 10 минут назад
			$this->Onlineuser->deleteall(array('Onlineuser.lastaction <' => $cleartime), false);
		}
	}
	private function auth(){
		Configure::write('Authake.useDefaultLayout', true);
		$this->Authake->beforeFilter($this);
	}
	

}
?>